unit Unit1;

{$mode objfpc}{$H+}

interface

uses
  Classes, SysUtils, Forms, Controls, Graphics, Dialogs, StdCtrls;

type

  { TForm1 }

  TForm1 = class(TForm)
    Button1: TButton;
    ComboBox1: TComboBox;
    Label1: TLabel;
    procedure Button1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private

  public

  end;

var
  Form1: TForm1;

implementation

{$R *.lfm}

{ TForm1 }

{
公元后----------------------------------------------------------------------------------------
年干支推算：
天干序数按：1（甲），2（乙），3（丙），4（丁），5（戊），6（己），7（庚），8（辛），9（壬），10（癸）
地支序数按：1（寅），2（卯），3（辰），4（巳），5（午），6（未），7（申），8（酉），9（戌），10（亥），11（子），12（丑）
年干支推算：
①年干公式：年干=年份个位数- 3（适用于任何西元年，个位数小于3，借10）
②年支公式：年支=（年份+7）÷12余数（整除余0，即余12=丑）
③年支简化：
（西元年末二位数-1）-12*N=年支（适用于20世纪，即1900—1999年）
（西元年末二位数+3）-12*N=年支（适用于21世纪，即2000—2099年）
例：求2015年干支？
解：2015年干=5-3=2，2=乙，故2015年天干为乙
2015年支=15+3-12=18-12=6，6=未，故2015年地支为未
综上，2015年干支为乙未
例：求公元189年干支？
解：189年干=9-3=6=己，189年支=（189+7）/12余4=巳，189年干支为己巳
月干支推算：
①月干公式：月干=年干x2+月支（和超过10，直接取个位数）
②简化公式：（和取个位）
亥月干=年干x2
子月干=年干x2+1=寅月干
丑月干=年干x2+2=卯月干
例：已知2015年为乙未年，求2015年申月天干？
解：2015年乙未年，天干为乙，乙=2，申=7
申月干=乙x2+申=2*2+7=11，个位=1，1=甲，故申月天干为甲
例：求2012年壬辰年，亥月天干？
解：亥月干=壬x2+亥=9*2+10=18+10=28，个位=8，8=辛，故2012年壬辰年亥月天干为辛
（注：亥月天干公式，可直接简化为：亥月干=年干x2）
例：求戊子年，子月天干？
解：子月干=戊x2+子=5*2+11=21，个位=1=甲，故戊子年子月天干为甲

}
procedure TForm1.FormCreate(Sender: TObject);
var
   i:integer;
begin
  for i:=2050 downto 1900 do
  begin
    combobox1.Items.Add(inttostr(i));
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
   x,y:integer;
   ng,nz:string;
     //年干=年份个位数- 3（适用于任何西元年，个位数小于3，借10）
   //年支=（年份+7）÷12余数（整除余0，即余12=丑）
begin
  x:=strtoint(copy(combobox1.text,4,1));
  if x<3 then
  begin
    x:= x-3+10 ;
    showmessage(inttostr(x));
  end
  else
  begin
    x:=x-3;

  end   ;
  case x of
  1:
    ng:='甲';
  2:
     ng:='乙';
   3:
     ng:='丙';
   4:
     ng:='丁';
   5:
     ng:='戊';
  6:
     ng:='己';
   7:
     ng:='庚';
  8:
     ng:='辛';
 9:
     ng:='壬';
   10:
       ng:='癸';
  end;
     showmessage(ng);
y:=  (strtoint(combobox1.text)+7)   mod 12   ;
   case x of
  1:
    ng:='甲';
  2:
     ng:='乙';
   3:
     ng:='丙';
   4:
     ng:='丁';
   5:
     ng:='戊';
  6:
     ng:='己';
   7:
     ng:='庚';
  8:
     ng:='辛';
 9:
     ng:='壬';
   10:
       ng:='癸';
  end;
end;



end.

